home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2005 October / PCWOCT05.iso / Software / FromTheMag / XAMPP 1.4.14 / xampp-win32-1.4.14-installer.exe / xampp / php / pear / MDB / QueryTool / Result.php < prev   
PHP Script  |  2004-03-24  |  4KB  |  153 lines

  1. <?php
  2. // +----------------------------------------------------------------------+
  3. // | PHP Version 4                                                        |
  4. // +----------------------------------------------------------------------+
  5. // | Copyright (c) 1997-2003 The PHP Group                                |
  6. // +----------------------------------------------------------------------+
  7. // | This source file is subject to version 2.02 of the PHP license,      |
  8. // | that is bundled with this package in the file LICENSE, and is        |
  9. // | available at through the world-wide-web at                           |
  10. // | http://www.php.net/license/2_02.txt.                                 |
  11. // | If you did not receive a copy of the PHP license and are unable to   |
  12. // | obtain it through the world-wide-web, please send a note to          |
  13. // | license@php.net so we can mail you a copy immediately.               |
  14. // +----------------------------------------------------------------------+
  15. // | Author: Lorenzo Alberton <l.alberton at quipo.it>                    |
  16. // +----------------------------------------------------------------------+
  17. //
  18. // $Id: Result.php,v 1.4 2003/05/09 23:48:44 quipo Exp $
  19. //
  20. // This is just a port of DB_QueryTool, originally written by
  21. // Wolfram Kriesing and Paolo Panto, vision:produktion <wk@visionp.de>
  22. // All the praises go to them :)
  23. //
  24.  
  25. /**
  26. *   this result actually contains the 'data' itself, the number of rows
  27. *   returned and some additional info
  28. *   using ZE2 you can also get retreive data from the result doing the following:
  29. *   <MDB_QueryTool_Common-instance>->getAll()->getCount()
  30. *   or
  31. *   <MDB_QueryTool_Common-instance>->getAll()->getData()
  32. *
  33. *
  34. *   @package    MDB_QueryTool
  35. *   @version    2002/07/11
  36. *   @access     public
  37. *   @author     Lorenzo Alberton
  38. */
  39. class MDB_QueryTool_Result
  40. {
  41.     var $_data = array();
  42.     var $_count = 0;
  43.     /**
  44.      * the counter for the methods getFirst, getNext
  45.      */
  46.     var $_counter = null;
  47.  
  48.     /**
  49.      * create a new instance of result with the data returned by the query
  50.      *
  51.      * @param      array   the data returned by the result
  52.      * @access     public
  53.      */
  54.     function MDB_QueryTool_Result($data)
  55.     {
  56.         list($firstElement) = $data;
  57.         if(is_array($firstElement)) {  // is the array a collection of rows?
  58.             $this->_count = sizeof($data);
  59.         } else {
  60.             if(sizeof($data) > 0) {
  61.                 $this->_count = 1;
  62.             } else {
  63.                 $this->_count = 0;
  64.             }
  65.         }
  66.         $this->_data = $data;
  67.     }
  68.  
  69.     /**
  70.      * return the number of rows returned
  71.      *
  72.      * @access     public
  73.      */
  74.     function getCount()
  75.     {
  76.         return $this->_count;
  77.     }
  78.  
  79.     /**
  80.      * get all the data returned
  81.      *
  82.      * @param string $key
  83.      * @return mixed
  84.      * @access     public
  85.      */
  86.     function getData($key=null)
  87.     {
  88.         if($key===null) {
  89.             return $this->_data;
  90.         }
  91.         if($this->_data[$key]) {
  92.             return $this->_data[$key];
  93.         } else {
  94.             return new PEAR_Error("there is no element with the key '$key'!");
  95.         }
  96.     }
  97.  
  98.     /**
  99.      * get first result set
  100.      * we are not using next, current, and reset, since those ignore keys
  101.      * which are empty or 0
  102.      *
  103.      * @return mixed
  104.      * @access public
  105.      */
  106.     function getFirst()
  107.     {
  108.         if($this->getCount() > 0) {
  109.             $this->_dataKeys = array_keys($this->_data);
  110.             $this->_counter = 0;
  111.             return $this->_data[$this->_dataKeys[$this->_counter]];
  112.         }
  113.         return new PEAR_Error('there are no elements!');
  114.     }
  115.  
  116.     /**
  117.      * get next result set
  118.      * we are not using next, current, and reset, since those ignore keys
  119.      * which are empty or 0
  120.      *
  121.      * @return mixed
  122.      * @access public
  123.      */
  124.     function getNext()
  125.     {
  126.         if($this->hasMore()) {
  127.             $this->_counter++;
  128.             return $this->_data[$this->_dataKeys[$this->_counter]];
  129.         }
  130.         return new PEAR_Error("there are no more elements!");
  131.     }
  132.  
  133.     /**
  134.      * check if there are other results
  135.      *
  136.      * @return boolean
  137.      * @access public
  138.      */
  139.     function hasMore()
  140.     {
  141.         if($this->_counter+1 < $this->getCount()) {
  142.             return true;
  143.         }
  144.         return false;
  145.     }
  146.  
  147.     //TODO
  148.     //function getPrevious()
  149.     //function getLast()
  150.  
  151.  
  152. }
  153. ?>